package com.ruoyi.system.api.service;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.system.api.ResponseWithData;
import com.ruoyi.system.api.domain.InstrumentInfo;
import com.ruoyi.system.api.domain.ServiceInstrument;
import com.ruoyi.system.api.domain.ServiceNotice;
import com.ruoyi.system.api.domain.UpdateApply;

import java.util.List;
import java.util.Map;

/**
 * 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)Service接口
 * 
 * @author shihx
 * @date 2020-03-05
 */
public interface IServiceInstrumentService 
{
    /**
     * 查询服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     * 
     * @param id 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)ID
     * @return 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     */
    public ServiceInstrument selectServiceInstrumentById(Long id);

    /**
     * 查询服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)列表
     * 
     * @param serviceInstrument 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     * @return 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)集合
     */
    public List<ServiceInstrument> selectServiceInstrumentList(ServiceInstrument serviceInstrument);

    /**
     * 新增服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     * 
     * @param serviceInstrument 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     * @return 结果
     */
    public int insertServiceInstrument(ServiceInstrument serviceInstrument);

    /**
     * 修改服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     * 
     * @param serviceInstrument 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     * @return 结果
     */
    public int updateServiceInstrument(ServiceInstrument serviceInstrument);

    /**
     * 批量删除服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteServiceInstrumentByIds(String ids);

    /**
     * 删除服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)信息
     * 
     * @param id 服务派单涉及到的仪器信息 (数据来源于CC端主动调用，和服务派单主信息一起入库)ID
     * @return 结果
     */
    public int deleteServiceInstrumentById(Long id);

    /**
     * 2.5TL设置仪器指定FSE接口
     * @methodName: setPartAccountFSE
     * @description: TODO
     * @param ServiceNoticeId
     * @param ServiceNo
     * @param TeamleaderId
     * @param AccoutfseId
     * @param AccoutfseName
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/6 16:41
    **/
    public ResponseWithData<?> setPartAccountFSE(String ServiceNoticeId, String ServiceNo, String TeamleaderId, String AccoutfseId, String AccoutfseName);

    /**
     * 2.53查询仪器数据
     * @methodName: setPartAccountFSE
     * @description: TODO
     * @param CustomerName
     * @param serialNo
     * @param Div
     * @param bu
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/6 16:41
     **/
    public ResponseWithData<?> getInstrumentList(String CustomerName, String serialNo, String Div, String bu,String starttime,String endtime) throws Exception;
    /**
     * 核对序列号接口
     * @methodName: checkSerialNumber
     * @description: TODO
     * @param ServiceNoticeId
     * @param serialNumber
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/9 16:37
    **/
    public ResponseWithData<?> checkSerialNumber(String ServiceNoticeId, String serialNumber);

    /**
     * 仪器绑定二维码接口
     * @methodName: bindingQrCode
     * @description: TODO
     * @param ServiceNoticeId
     * @param QrCode
     * @param EnginnerId
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/9 16:49
    **/
    public ResponseWithData<?> bindingQrCode(String ServiceNoticeId, String QrCode, String EnginnerId);

    /**
     * 信息修改申请接口
     * @methodName: updateApply
     * @description: TODO
     * @param updateApply
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/11 14:28
    **/
    public ResponseWithData<?> updateApply(UpdateApply updateApply);


    /**
     * 信息跳过接口
     * @methodName: updateApply
     * @description: TODO
     * @param updateApply
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: lianjun
     * @date: 2020/5/24 14:28
     **/
    public ResponseWithData<?> skipApply(UpdateApply updateApply);

    /**
     * 验证服务单是否绑定过AccoutFse
     * @methodName: checkAccoutFse
     * @description: TODO
     * @param ServiceNoticeId
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/19 14:56
    **/
    public ResponseWithData<?> checkAccoutFse(Long ServiceNoticeId);

    /**
     * 签到时验证服务单地址是否发生变更
     * @methodName: checkAddressDistance
     * @description: TODO
     * @param ServiceNoticeId
     * @param longitude
     * @param latitude
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/23 8:47
    **/
    public ResponseWithData<?> checkAddressDistance(String ServiceNoticeId, String longitude, String latitude);
   
    /**
     * 获取当前服务单的地理位置和经纬度
     * @methodName: getInstrument
     * @description: TODO
     * @param ServiceNoticeId	
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/23 11:25
    **/
    public ResponseWithData<?> getInstrument(String ServiceNoticeId);

    /**
     * 根据仪器主键更新经纬度
     * @methodName: updateInstrument
     * @description: TODO
     * @param ServiceNoticeIds
     * @param longitude
     * @param latitude
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020/3/23 13:52
    **/
    public ResponseWithData<?> updateInstrument(String ServiceNoticeIds,Double longitude,Double latitude);

    /**
     * 根据服务单号查询仪器
     * @methodName: getInstrumentByServiceNo
     * @description: TODO
     * @param params
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: wlf
     * @date: 2020/3/28 12:04
     **/
    List<JSONObject> getInstrumentByServiceNo(Map<String, Object> params);
    /**
     * 工作台仪器二维码绑定
     * @methodName: bingQrCode
     * @description: TODO
     * @param instrumentInfo
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: shihx
     * @date: 2020-03-28 10:07
    **/
    public ResponseWithData<?> bingQrCode(InstrumentInfo instrumentInfo) throws Exception;

    /**
     * 2.54查询服务报告数据
     * @methodName: syncAllServiceReport
     * @description: TODO
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: wlf
     * @date: 2020-04-24 16:51
     **/
    ResponseWithData<?> syncAllServiceReport(String instrument_id, String starttime, String endtime, String custName, String snType, String snSubType, String serialNo, String status);

    String getInstrumentCfda(String instrumentCode);
}
